<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 原型链一句话,就是实例对象没有的属性去哪里找
        //      一层一层往上找,就形成一个链形结构.

        // 定义一个构造函数
        function Star(name ,age){
            this.name = name;
            this.age = age;
        }
        // 定义原型方法
        Star.prototype.sing = function(){
            console.log('唱歌');
        }

        // 创建实例
        const s1 = new Star('刘德华',58)
        console.log(s1.__proto__);
        
        // Star.prototype 原型对象也是对象,谁创建的???
        console.log(Star.prototype.__proto__ == Object.prototype);

        // object.prototype 原型对象也是对象,谁创建的???
        console.log(Object.prototype.__proto__);

        //  原型链面试题,经典回复
        // 1. 自定义构造函数可以创建实例对象;
        // 2. 实例对象的__proto__反向指回,他的构造函数的原型对象;
        // 3. 自定义构造函数的原型对象的__proto__,反向指向  Object的原型对象.
        // 4. Object的构造函数原型对象的__proto__,指向null.
    </script>
</body>
</html>